<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        // eleCache
		// typeCache
		// classCache
		// eventCache
		
		function createCache() {
			// cache 对象中以键值对的形式存储我们的缓存数据
			var cache = {};
			// index数组中该存储键,这个是有顺序,可以方便我们做超出容量的处理
			var index = [];
			return function (key,value) {
				// 如果传了值,就说明是设置值
				if(value !== undefined) {
					// 将数据存入cache对象,做缓存
					cache[key] = value;
					// 将键存入index数组中,以和cache中的数据进行对应
					index.push(key);
					// 判断缓存中的数据数量是不是超出了限制
					if(index.length >= 50) {
						// 如果超出了限制
						// 删掉最早存储的数据
						// 最早存入缓存的数据键是在index数组的第一位
						// 使用数组的shift方法可以获取并删除掉数组中第一个元素
						var tempKey = index.shift();
						// 获取到最早加入缓存的这个数据的键,可以使用它键数据从缓存各种删除
						delete cache[tempKey];
					}
				}
				// 如果没有传值,只穿了键,那就是获取值
				return cache[key];
			}
		}
		
		
		var eleCache = createCache();
		eleCache("name","李一鸣");
		console.log(eleCache("name"));
		var typeCache = createCache();
    </script>
</head>
<body>

</body>
</html>